home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 103 / CD-ROM 103.iso / edu / martianwin / src / input.c < prev    next >
Encoding:
C/C++ Source or Header  |  2003-08-11  |  1.9 KB  |  112 lines

  1. #define Kleft   1
  2. #define Kright  2
  3. #define Kup     3
  4. #define Kdown   4
  5. #define Kaction 5
  6. #define Ktab    6
  7. #define Kload   7
  8. #define Ksave   8
  9. #define Kprev   9
  10. #define Knext   10
  11.  
  12. #define Kescape 11
  13. #define Kexit   99
  14.  
  15. int keyaction=0;
  16.  
  17. #define left 1
  18. #define right 2
  19.  
  20. void chk_mouse();
  21.  
  22. int key_events()
  23. {
  24.     int keyaction;
  25.     SDL_Event event;
  26.     Uint8 *keys;
  27.     while(SDL_PollEvent(&event)==1)
  28.     {
  29.     if(event.type==SDL_MOUSEBUTTONDOWN) chk_mouse();
  30.     if(event.type==SDL_QUIT) keyaction=Kexit;
  31.     if(event.type==SDL_KEYDOWN)
  32.     {
  33.         switch(event.key.keysym.sym)
  34.         {
  35.         case SDLK_F10:
  36.             keyaction=Kexit;
  37.             break;
  38.         case SDLK_DOWN:
  39.             keyaction=Kdown;
  40.             break;
  41.         case SDLK_UP:
  42.             keyaction=Kup;
  43.             break;
  44.         case SDLK_LEFT:
  45.             keyaction=Kleft;
  46.             break;
  47.         case SDLK_RIGHT:
  48.             keyaction=Kright;
  49.             break;
  50.         case SDLK_SPACE:
  51.             keyaction=Kaction;
  52.             break;
  53.         case SDLK_ESCAPE:
  54.             keyaction=Kescape;
  55.             break;
  56.         }
  57.     }
  58.     }
  59.     return(keyaction);
  60. }
  61.  
  62. int menu_events()
  63. {
  64.     SDL_Event event;
  65.     Uint8 *keys;
  66.     keyaction=0;
  67.     while(SDL_PollEvent(&event))
  68.     {
  69.     if(event.type==SDL_KEYDOWN)
  70.     {
  71.         keys=SDL_GetKeyState(NULL);
  72.         if(event.type==SDL_QUIT) keyaction=Kexit;
  73.         if(keys[SDLK_F10]) keyaction=Kexit;
  74.         if(keys[SDLK_DOWN]) keyaction=Kdown;
  75.         if(keys[SDLK_UP]) keyaction=Kup;
  76.         if(keys[SDLK_LEFT]) keyaction=Kleft;
  77.         if(keys[SDLK_RIGHT]) keyaction=Kright;
  78.         if(keys[SDLK_SPACE]) keyaction=Kaction;
  79.     }
  80.     }
  81.     return(keyaction);
  82. }
  83.  
  84. void flush_events()
  85. {
  86.     SDL_Event event;
  87.     while(SDL_PollEvent(&event)) {}
  88. }
  89.  
  90. void wait_action()
  91. {
  92.     int action=0;
  93.     while(action!=Kescape && action!=Kaction)
  94.     {
  95.     action=key_events();
  96.     SDL_Delay(5);
  97.     play_music();
  98.     }
  99. }
  100.  
  101. void wait_mouse()
  102. {
  103.     SDL_Event event;
  104.     while(true)
  105.     {
  106.     SDL_PollEvent(&event);
  107.     if(event.type==SDL_MOUSEBUTTONDOWN && event.button.button==SDL_BUTTON_RIGHT) break;
  108.     SDL_Delay(5);
  109.     play_music();
  110.     }
  111. }
  112.